1. Field of the Invention
The present invention relates in general to a disk drive controller for computer systems. In particular, the present invention provides a disk drive controller that is capable of arbitrary drive letter assignment, and furthermore, is capable of arbitrary drive letter assignment without the need for physical jumper settings and/or disk drive data/control cable re-connection.
2. Description of Related Art
The IDE (integrated disk electronics) interface has been widely adopted for small computer systems as the standard interface for disk storage subsystems. For example, the IDE interface is found in many 80X86-based IBM-compatible computer systems. One primary reason that IDE hard disk drives are popular is because they are relatively easy to integrate into a computer system, because the disk control electronics are all built onto the drive itself. The interface to the computer system appears to be a simple set of I/O windows, or, I/O ports to the system expansion bus, or more precisely, to the CPU of the system. Accessing an IDE disk drive is a matter of the CPU issuing I/O read/writes to the designated I/O ports of its I/O space, and the disk electronics handling the substantial storage and retrieval of data bits on the disk drive.
Because the disk controller electronic circuitry is built into the drive, it can be tailored to achieve optimal compatibility with the specific electrical and mechanical characteristics of the disk drive into which it is integrated. Any disk drive compatibility problems are hidden from the user by the IDE interface. This is the primary reason why the IDE drives have replaced the MFM (modified frequency-modulation) drives as the low cost and cost-effective disk storage for home and office computer systems.
The IDE interface was originally designed as a hard disk drive interface that could handle only two physical drives. One or two IDE drive units may be present on each IDE disk controller. When two drives are installed, they are cascaded on a common data/control cable, with one assigned as the master, and the other as the slave drive. Either of the two installed drives can be configured as the master or the slave drive via the setting of one or more switches, or more commonly Berg jumpers, on the electronic printed circuit board of the drives.
However, the IDE interface, as such is now found to be inadequate for the desired number of supported drive units. The capacity of the standard IDE interface to support only two drive units is becoming insufficient to support the increasing number of devices that are designed to use an IDE interface to a computer system. For example, some removable disk storage systems have provided IDE versions in addition to SCSI counterparts. CD-ROM drive units are also migrating to the IDE arena. It is therefore common to find a computer system that already has two IDE hard disk drives installed with no additional room for a CD-ROM drive featuring the IDE interface.
To overcome this problem of insufficient device support capability, an improved version of the IDE interface, known as the Enhanced IDE (EIDE) interface was introduced. The EIDE interface has two sets of device connectors, a primary set and a secondary set, each of which, like its IDE counterpart, supports a master and slave, two devices in cascade. Thus, for a computer system equipped with an EIDE interface, four IDE disk and/or CD-ROM drives can be connected to the primary and secondary connectors as drives C, D, E and F respectively.
Normally, the master drive of the primary connector is drive C, the slave drive of the primary connector is drive D, the master drive of the secondary connector is drive E, and the slave drive of the secondary connector is drive F. As was in the case of the IDE interface, the physical drive letters arrangement, or the assignment of the master and slave drives on either the primary or secondary connector, are determined by the setting of drive configuration jumpers.
FIG. 1 (Prior Art) of the accompanying drawing of the present invention is a block diagram showing the configuration of a conventional connection of four IDE hard disk drives over an EIDE interface in a computer system. As is seen in the drawing, the disk controller 20, which may be implemented in a disk controller IC chip in the typical EIDE interface adapter for microprocessor-based home or office computers, can be hooked up to the computer system through I/O port 10 via a system expansion bus, not shown in the drawing. The disk controller 20 has connected thereto the primary and secondary connectors 30 and 40 respectively for the EIDE interface. The primary and secondary connectors 30 and 40 may each connect a cascade of two IDE disk devices, such as the IDE drives 50 and 51 in the primary cascade and the IDE drives 60 and 61 in the secondary cascade.
Normally, the IDE drives 50 and 51 in the primary cascade are each assigned as the master and slave drives via the setting of the jumper blocks 55 and 56 contained therein respectively, and the IDE drives 60 and 61 in the secondary cascade are each assigned as the master and slave drives via the setting of the jumper blocks 65 and 66 contained therein respectively. Drive 50 and 51 on the primary cascade are assigned the drive letters C and D respectively, while drives 60 and 61 on the secondary cascade are assigned the letters E and F respectively.
As described above, the IDE drives appear to the host computer system as simple I/O devices over the designated I/O ports. All the interfacing commands issued to the drives by the host computer, as well as the data transceiving between the drives and the host, are done via these designated I/O ports. In the case of the ISA version of the EIDE interface, the data transfer between the host and the drives are conducted over the ISA bus in single or double-bytes. For example, in the original IBM PC-AT computer, the I/O ports 1F0h-1F7h (hexadecimal) were designated for the "fixed disk drive". In ISA computers systems generally known as IBM-compatible computer, drives C and D of the primary cascade have a set of designated I/O ports at address 1F0h-1F7h (generally denoted as 1FXh), while drives E and F of the secondary cascade have a set of I/O ports designated at address 170h-177h (17Xh).
Within the primary and secondary cascades, the master and slave drives are each selected by the decoding of the CPU-issued I/O access ports. In the case of the primary cascade, when the issued I/O ports fall in the range of 1F0h-1F7h , a chip-select signal CS17X FX#, which may be an active low signal in the case of the ISA IDE/EIDE interface, is relayed to the IDE drives in the cascade via the pin 37 of the drive connector of the EIDE interface. On the other hand, when the CPU I/O port access falls in the range of 3F6h-3F7h, another active-low chip-select signal CS3F6# is relayed to the IDE drives via pin 38 of the EIDE connector. Similarly, when the secondary cascade is concerned, the chip-select signals CS17X# and CS376# are generated by decoding the effective CPU-issued I/O addresses in the ranges 170h-177h and 376h-377h respectively.
The chip-select signals CS1FX# and CS3F6#, as well as CS17X# and CS376# are thus utilized by the disk controller 20 to distinguish between the host access to the master and slave drives in the primary and secondary cascades. In addition to this, the master and slave drives in the primary and secondary cascades themselves are further distinguished by the sixth bit of the data byte at the I/O ports 1F6h and 176h respectively. A zero bit (logical low) appearing at the sixth bit of I/O address 1F6h or 176h signifies the designation of a drive as the master drive in the cascade, and an one bit (logical high) signifies the designation as the slave drive. The jumpers 55, 56, 65 and 66 on the IDE drives 50, 51, 60 and 61 respectively serve to configure each of the drives to properly receive and interpret the SD6 bit of the 1F6h and 176h port for a desired master/slave designation.
Thus, the configuration of the master and slave drives in the primary and secondary cascades of a conventional EIDE interface can be adjusted only by physically changing a drive jumper setting and the cabling. Such adjustments require that the hardware configuration be altered by gaining physical access to the internal area of the computer system unit. This is a job that requires certain specialized knowledge of to the computer system which the majority of computer users do not have.